adding tests for TwitterPublishAgent modeled after the twilio agent ones

Albert Sun 11 years ago
parent
commit
29b482b7c1
1 changed files with 56 additions and 0 deletions
  1. 56 0
      spec/models/agents/twitter_publish_agent_spec.rb

+ 56 - 0
spec/models/agents/twitter_publish_agent_spec.rb

@@ -0,0 +1,56 @@
1
+require 'spec_helper'
2
+
3
+describe Agents::TwitterPublishAgent do
4
+  before do
5
+    @opts = {
6
+      :username => "HuginnBot",
7
+      :expected_update_period_in_days => "2",
8
+      :consumer_key => "---",
9
+      :consumer_secret => "---",
10
+      :oauth_token => "---",
11
+      :oauth_token_secret => "---",
12
+      :message_path => "text"
13
+    }
14
+
15
+    @checker = Agents::TwitterPublishAgent.new(:name => "HuginnBot", :options => @opts)
16
+    @checker.user = users(:bob)
17
+    @checker.save!
18
+
19
+    @event = Event.new
20
+    @event.agent = agents(:bob_weather_agent)
21
+    @event.payload = { :text => 'Gonna rain..' }
22
+    @event.save!
23
+
24
+    @sent_messages = []
25
+    stub.any_instance_of(Agents::TwitterPublishAgent).publish_tweet { |message| @sent_messages << message}
26
+  end
27
+
28
+  describe '#receive' do
29
+    it 'should publish any payload it receives' do
30
+      event1 = Event.new
31
+      event1.agent = agents(:bob_rain_notifier_agent)
32
+      event1.payload = { :text => 'Gonna rain..' }
33
+      event1.save!
34
+
35
+      event2 = Event.new
36
+      event2.agent = agents(:bob_weather_agent)
37
+      event2.payload = { :text => 'More payload' }
38
+      event2.save!
39
+
40
+      Agents::TwitterPublishAgent.async_receive(@checker.id, [event1.id, event2.id])
41
+      @sent_messages.count.should eq(2)
42
+      @checker.events.count.should eq(2)
43
+    end
44
+  end
45
+
46
+  describe '#working?' do
47
+    it 'checks if events have been received within the expected receive period' do
48
+      @checker.should_not be_working # No events received
49
+      Agents::TwitterPublishAgent.async_receive(@checker.id, [@event.id])
50
+      @checker.reload.should be_working # Just received events
51
+      two_days_from_now = 2.days.from_now
52
+      stub(Time).now { two_days_from_now }
53
+      @checker.reload.should_not be_working # More time has passed than the expected receive period without any new events
54
+    end
55
+  end
56
+end